Processing
MIDI Data from Two MIDI Sources
The MIDI
subsystem can route MIDI messages from two data sources to a single MIDI output
device for concurrent playback. For example, one source can be background music
or a bass line that has been pre-recorded and stored in a file. The second
source can be live data from a MIDI instrument, such as a keyboard or guitar.
Both data
sources send MIDI data to a single MIDI device that is identified with one
handle. Send one data stream by using the midiStreamOut function and one or more
stream buffers. This data stream typically contains prerecorded data that is
packed into the buffer.
Send the
second data stream (typically from a MIDI instrument) asynchronously by using
the midiOutShortMsg
function. The running status of a stream buffer will not be adversely affected
by the asynchronous calls made by the second data stream.
Each short
message sent with midiOutShortMsg must be a complete MIDI message, with
a status byte and the appropriate number of data bytes. If the status byte is
omitted, midiOutShortMsg returns an error. (However, there is no running
status with stream output.)